package com.sptokentest.controller;


import cn.dev33.satoken.util.SaResult;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.sptokentest.entity.Menu;
import com.sptokentest.pj.dto.MenuDto;
import com.sptokentest.pj.dto.MenuPerDto;
import com.sptokentest.service.MenuService;
import com.sptokentest.service.RoleMenuService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author young
 * @since 2023年02月03日
 */
@RestController
@RequestMapping("/menu")
public class MenuController {
    @Autowired
    private MenuService menuService;
    @Autowired
    private RoleMenuService roleMenuService;

    /**
     * 前端侧边栏动态展示
     * @return
     */
    @GetMapping
    public SaResult getmenus(){
        return SaResult.data(menuService.getmenus());
    }

    /**
     * 角色管理权限展示
     */
//    @GetMapping("/getRolePer")
//    public SaResult getRolePer(Long id){
//        List<MenuDto> perList = new ArrayList<>();
//        List<Menu> pers = menuService.getmenus(id);
//        for (Menu per :
//                pers) {
//            MenuDto menudto = new MenuDto();
//            menudto.setMenuId(per.getMenuId());
//            menudto.setMenuName(per.getMenuName());
//            LambdaQueryWrapper<Menu> lqw = new LambdaQueryWrapper<>();
//            lqw.eq(Menu::getMid,per.getMenuId());
//            List<Menu> children = menuService.list(lqw);
//            List<MenuDto> childrenList = new ArrayList<>();
//            for (Menu child :
//                    children) {
//                MenuDto childDto = new MenuDto();
//                childDto.setMenuId(child.getMenuId());
//                childDto.setMenuName(child.getMenuName());
//                childrenList.add(childDto);
//            }
//            menudto.setChildren(childrenList);
//            perList.add(menudto);
//        }
//        return SaResult.data(perList);
//    }

//    @GetMapping("/getRolePer")
//    public SaResult getRolePer(Long roleId){
//        List<Long> perIds = new ArrayList<>();
//        List<Menu> pers = menuService.getmenus(roleId);
//        for (Menu per :
//                pers) {
//            LambdaQueryWrapper<Menu> lqw = new LambdaQueryWrapper<>();
//            lqw.eq(Menu::getMid,per.getMenuId());
//            List<Menu> children = menuService.list(lqw);
//            for (Menu child :
//                    children) {
//                perIds.add(child.getMenuId());
//            }
//        }
//        return SaResult.data(perIds);
//    }

//    @GetMapping("/")

    /**
     * 获取所有权限列表 返回值是列表  元素数据类型为MenuPerDto
     * @return
     */
    @GetMapping("/getPerMenus")
    public SaResult getPerMenus(){
        return menuService.getPerMenus();
    }

    /**
     * 获取角色已有权限的id 返回值类型为List 元素的数据类型为Long
     * @param roleId
     * @return
     */
    @GetMapping("/getRolePer")
    public SaResult getRolePer(Long roleId){
        return menuService.getRolePer(roleId);
    }


}

